Example |
PROCEDURE TForm4.TestShlWAPIColorAdjustLuma(Sender : TObject);
VAR bmp : TBitmap;
VAR bmprect : TRect;
VAR originalcolor : COLORREF;
VAR newluma : INTEGER;
VAR modifiedcolor : COLORREF;
VAR colorname : STRING;
VAR newinfoline : STRING;
BEGIN
bmp := NIL;
FillChar(bmprect, SizeOf(bmprect), #0);
originalcolor := 0;
newluma := 0;
modifiedcolor := 0;
colorname := '';
newinfoline := '';
bmp := TBitmap.Create();
bmp.Width := 48;
bmp.Height := 48;
bmprect := Rect(0, 0, 48, 48);
originalcolor := $FF00FF;
bmp.Canvas.Brush.Color := originalcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('OriginalColor1.bmp');
ColorToIdent(originalcolor, colorname);
newluma := 500;
newinfoline := 'ColorAdjustLuma called with 0x' + IntToHex(originalcolor, 8) +
' (' + IntToStr(originalcolor) + ')' + ' (' + colorname + ')' +
' and n = ' + IntToStr(newluma);
Memo1.Lines.Add(newinfoline);
modifiedcolor := ColorAdjustLuma(originalcolor, newluma, TRUE);
ColorToIdent(modifiedcolor, colorname);
newinfoline := 'Modified color : 0x' + IntToHex(modifiedcolor, 8) +
' (' + IntToStr(modifiedcolor) + ')' + ' (' + colorname + ')';
Memo1.Lines.Add(newinfoline);
bmp.Canvas.Brush.Color := modifiedcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('AdjustedColor1.bmp');
originalcolor := $0000FF;
bmp.Canvas.Brush.Color := originalcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('OriginalColor2.bmp');
ColorToIdent(originalcolor, colorname);
newinfoline := 'ColorAdjustLuma called with 0x' + IntToHex(originalcolor, 8) +
' (' + IntToStr(originalcolor) + ')' + ' (' + colorname + ')' +
' and n = ' + IntToStr(newluma);
Memo1.Lines.Add(newinfoline);
modifiedcolor := ColorAdjustLuma(originalcolor, newluma, FALSE);
ColorToIdent(modifiedcolor, colorname);
newinfoline := 'Modified color : 0x' + IntToHex(modifiedcolor, 8) +
' (' + IntToStr(modifiedcolor) + ')' + ' (' + colorname + ')';
Memo1.Lines.Add(newinfoline);
bmp.Canvas.Brush.Color := modifiedcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('AdjustedColor2.bmp');
originalcolor := $808080;
bmp.Canvas.Brush.Color := originalcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('OriginalColor3.bmp');
ColorToIdent(originalcolor, colorname);
newinfoline := 'ColorAdjustLuma called with 0x' + IntToHex(originalcolor, 8) +
' (' + IntToStr(originalcolor) + ')' + ' (' + colorname + ')' +
' and n = ' + IntToStr(newluma);
Memo1.Lines.Add(newinfoline);
modifiedcolor := ColorAdjustLuma(originalcolor, newluma, TRUE);
ColorToIdent(modifiedcolor, colorname);
newinfoline := 'Modified color : 0x' + IntToHex(modifiedcolor, 8) +
' (' + IntToStr(modifiedcolor) + ')' + ' (' + colorname + ')';
Memo1.Lines.Add(newinfoline);
bmp.Canvas.Brush.Color := modifiedcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('AdjustedColor3.bmp');
originalcolor := $00FFFF;
bmp.Canvas.Brush.Color := originalcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('OriginalColor4.bmp');
ColorToIdent(originalcolor, colorname);
newluma := -500;
newinfoline := 'ColorAdjustLuma called with 0x' + IntToHex(originalcolor, 8) +
' (' + IntToStr(originalcolor) + ')' + ' (' + colorname + ')' +
' and n = ' + IntToStr(newluma);
Memo1.Lines.Add(newinfoline);
modifiedcolor := ColorAdjustLuma(originalcolor, newluma, TRUE);
ColorToIdent(modifiedcolor, colorname);
newinfoline := 'Modified color : 0x' + IntToHex(modifiedcolor, 8) +
' (' + IntToStr(modifiedcolor) + ')' + ' (' + colorname + ')';
Memo1.Lines.Add(newinfoline);
bmp.Canvas.Brush.Color := modifiedcolor;
bmp.Canvas.FillRect(bmprect);
bmp.SaveToFile('AdjustedColor4.bmp');
Memo1.Lines.Add('');
bmp.Free();
END;
|
The above example will produce the following output:
|
ColorAdjustLuma called with 0x00FF00FF (16711935) (clFuchsia) and n = 500
Modified color : 0x00FF80FF (16744703) (clFuchsia)
ColorAdjustLuma called with 0x000000FF (255) (clRed) and n = 500
Modified color : 0x00FFFFFF (16777215) (clWhite)
ColorAdjustLuma called with 0x00808080 (8421504) (clGray) and n = 500
Modified color : 0x00BFBFBF (12566463) (clGray)
ColorAdjustLuma called with 0x0000FFFF (65535) (clYellow) and n = -500
Modified color : 0x00008080 (32896) (clOlive)
|
It should also generate the eight Windows, bitmap (.bmp) files named
OriginalColor1.bmp, OriginalColor2.bmp, OriginalColor3.bmp, OriginalColor4.bmp,
AdjustedColor1.bmp, AdjustedColor2.bmp, AdjustedColor3.bmp, and AdjustedColor4.bmp.
shown below.
|
OriginalColor1.bmp
Fig. 2.1.2.3.13.1.0.1
|
OriginalColor2.bmp
Fig. 2.1.2.3.13.1.0.3
|
OriginalColor3.bmp
Fig. 2.1.2.3.13.1.0.5
|
OriginalColor4.bmp
Fig. 2.1.2.3.13.1.0.7
|
AdjustedColor1.bmp
Fig. 2.1.2.3.13.1.0.2
|
AdjustedColor2.bmp
Fig. 2.1.2.3.13.1.0.4
|
AdjustedColor3.bmp
Fig. 2.1.2.3.13.1.0.6
|
AdjustedColor4.bmp
Fig. 2.1.2.3.13.1.0.8
|